#ifndef FIFO_PACKET_H
#define FIFO_PACKET_H

#include "UtilFifo.h"

struct AVPacket;

namespace model {

/// Container class for embedding avcodec packets
class Packet
    :   boost::noncopyable
{
public:

    //////////////////////////////////////////////////////////////////////////
    // INITIALIZATION
    //////////////////////////////////////////////////////////////////////////

    Packet(AVPacket* packet);
    virtual ~Packet();

    //////////////////////////////////////////////////////////////////////////
    // GET/SET
    //////////////////////////////////////////////////////////////////////////

    AVPacket* getPacket();
    int getSizeInBytes();

private:

    //////////////////////////////////////////////////////////////////////////
    // MEMBERS
    //////////////////////////////////////////////////////////////////////////

    AVPacket* mPacket;
};

typedef boost::shared_ptr<Packet> PacketPtr;
typedef Fifo<PacketPtr> FifoPacket;

} // namespace

#endif // FIFO_PACKET_H
